package insight.google.game.era.client.proxy;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import insight.google.game.era.bo.GameActionLog;
import insight.google.game.era.bo.GameRoom;
import insight.google.game.era.bo.GameUser;
import insight.google.game.era.bo.Message;
import insight.google.game.era.bo.card.GameCard;
import insight.google.game.era.dto.GameRoomDTO;

import org.directwebremoting.proxy.ScriptProxy;

public interface RoomClientProxy extends ClientProxy {
	
	void setReadyForStart(ScriptProxy userProxy, String jsComponentId);
	void notifyUserJoined(ScriptProxy userProxy, String jsComponentId, GameUser newUser, long dataVersion);
	void gameOver(ScriptProxy userProxy, String jsComponentId);
	void notifyUserAction(ScriptProxy userProxy, String jsComponentId);
	void doRoomInit(ScriptProxy userProxy, String jsComponentId,GameRoom gameRoom, long dataVersion);

	void publicDataVersion(ScriptProxy userProxy, String jsComponentId, long dataVersion);
	
	void errorMsgShow(ScriptProxy userProxy, String jsComponentId, String error);

	void showRoomUsers(ScriptProxy userProxy, String jsComponentId, Collection<GameUser> data);
	void showGameResult(ScriptProxy userProxy, String jsComponentId, List<Map> data);
	
	void notifyActiveUser(ScriptProxy userProxy, String jsComponentId, GameUser activeUser);
	void notifyUserLifeCount(ScriptProxy userProxy, String jsComponentId, GameUser activeUser, int lifeCount, boolean isAddLife);
	void notifyUserCardCount(ScriptProxy userProxy, String jsComponentId,HashMap<String, String> data);
	void notifyUserEquipementCard(ScriptProxy userProxy, String jsComponentId,HashMap<String, Collection<GameCard>> data);
	void notifyUserPlayedCard(ScriptProxy userProxy, String jsComponentId,HashMap<String, GameCard> data);
	void updateGameLog(ScriptProxy userProxy, String jsComponentId,List<GameActionLog> gameLogList);
	
	void activeHangUser(ScriptProxy userProxy, String jsComponentId);

}
